//
//  BaseTableModelVC.h
//  JadeShop
//
//  Created by mac on 2019/5/24.
//  Copyright © 2019年 SZJ.test. All rights reserved.
//

#import "BaseViewController.h"
#import "BaseProtocol.h"
#import "BaseModel.h"
typedef NS_ENUM(NSInteger, CC_RefreshType) {
    CC_RefreshTypeNone = 0, // 默认
    CC_RefreshTypeHeader, // 刷新
    CC_RefreshTypeFooter, //加载
    CC_RefreshTypeAll, // 加载刷新
};
/*
 这个类  适合界面比较简单的 一个tableView的界面
 */





/*
   重要！！！！ 
   layoutRule tableView header footer 布局规则
   ~  ->   section结束标识符
   n  ->   不放头或尾标识符
   rx  ->  重复上一单元标识符 x是次数   r3就是重复三次  *rx是特殊的标识符 rx是重复到最后一个section(包含最后一个section)
   -   ->  section分隔标识符 此符前面的代表头 后面的代表尾
 
   注：以 r数字 结尾 一定要保证 与section 数量相同
 
 例:
     1-n~r3
 
 
 */
typedef void(^VCModelSet)(Class *modelClass,CC_RefreshType *needRefresh,NSDictionary **params,NSString **layoutRule);
typedef void(^VCHandleData)(void);
typedef void(^VCHFClass)(NSArray <NSString *> **headerClassArr,NSArray <NSString *> **footerClassArr);
typedef id(^VCHFModel)(NSInteger section,BOOL isHeader);


@interface BaseTableModelVC : BaseViewController <UITableViewDelegate,UITableViewDataSource>

@property (weak, nonatomic) IBOutlet UITableView *tableView;

@property (nonatomic,strong) BaseModel <BaseCellModelProtocol> * model;

@property (nonatomic,assign,readonly) NSInteger page;

@property (nonatomic,strong) NSMutableArray * dataSource;
/*
 处理数据  实现这个block 若果有刷新或加载功能 需手动结束 刷新状态
 */
@property (nonatomic,copy) VCHandleData handleData;
/*
 tableView headerFooter类
 */
@property (nonatomic,copy) VCHFClass HFClass;
/*
 获取tableView HeaderFooter model
 */
@property (nonatomic,copy) VCHFModel HFModel;

- (void)beginWithModelBlock:(VCModelSet)modelBlock;

@end
